package day11;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Map_Demo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();//如果没有指定类型，则默认K V泛型，可不写，与List相似
        map.put("001", "汪云飞1");
        map.put("002", "汪云飞2");
        map.put("003", "汪云飞3");
        map.put("004", "汪云飞4");
        map.put("005", "汪云飞5");
        System.out.println(map);//{001=汪云飞1, 002=汪云飞2, 003=汪云飞3, 004=汪云飞4, 005=汪云飞5}  重写了toString
        //key不重复 value可重复
        //存储key="003",value="张三"；...修改
        map.put("003", "张三");
        System.out.println(map);//当key存在，会修改原来的valve值
        //map中存储null值
        System.out.println(map + "--------------");
        map.put(null, "小六");
        System.out.println(map);
        map.put(null, null);
        System.out.println(map);
        map.put(null, null);
        System.out.println(map);

        //V remove(Object key)如果存在一个键的映射关系，则将其从此映射中移除（可选操作）。
        String remove = map.remove(null);
        System.out.println("删除nulldui对应的value值" + remove);
        System.out.println(map);
        //remove(Object key,Object value)
        boolean remove1 = map.remove("005", "汪云飞52");
        System.out.println(remove1);//false 删除如果输入K V要同时匹配
        System.out.println(map);
        //查找 V get(Object key) 返回指定键所映射的值；如果此映射不包含该键的映射关系，则返回null
        String value = map.get("002");
        System.out.println(value);
        System.out.println("+++++++++++++++++");
        //遍历Map
        //Map 接口提供三种collection 视图，允许以键集、值集或键-值映射关系集的形式查看某个映射的内容
        //获取所有的键集 keySet()
        //Set<K> keySet() 返回次映射中包含的键的Set视图
        Set<String> keys = map.keySet();
        for (String key : keys) {
            String v = map.get(key);
            System.out.print(key + "=" + v + ",");
        }
        System.out.println();
        //获取所有的值集
        //Collection<V> value()返回此映射中包含的值的Collection视图
        //Collection 单列集 它也没有索引
        Collection<String> values = map.values();
        for(String v:values){
            System.out.print(v+",");
        }
//Set<Map.Entry<K,V>> entrySet()返回此映射中包含的映射关系的 Set 视图。
        Set<Map.Entry<String, String>> entries = map.entrySet();
        for(Map.Entry<String,String> entry:entries ){
            Class<? extends Map.Entry> aClass = entry.getClass();
//

            String key= entry.getKey();
            String value2=entry.getValue();
            System.out.println(key+"="+value2);
        }
    }
}
